package org.gpf.dynamicProxy;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
 * @author gaopengfei
 * @date 2015-5-11 下午12:43:31
 */
public class ProxyFunction implements InvocationHandler {

	private ComputerMaker cm;		// 持有真实主题角色的引用
	
	/**
	 * 优惠方法
	 */
	public void discount(){
		
		System.out.println("我给你一些优惠！");
	}
	
	/**
	 * 送鼠标方法
	 */
	public void giveMouse(){
		
		System.out.println("我送你一个鼠标！");
	}
	
	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		
		String type = (String) args[0];
		// 只能代理联想、三星、苹果
		if ("联想".equals(type) || "三星".equals(type) || "苹果".equals(type)) {
			if (cm == null) {
				cm = new ComputerMaker();
				discount();
				giveMouse();
				
				method.invoke(cm, type);
			}
		}else {
			System.out.println("我没有你要的这个牌子的电脑！");
		}
		return null;
	}

}
